package cn.zyl.demo.common.tools;

import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;

/**
 * BeanTool工具类说明:类相关的工具
 *
 * @author wsz
 * @version v1.0
 * @date 2020-07-23
 */
public class BeanTool {
    private BeanTool() {
        throw new IllegalAccessError("BeanTool");
    }
    /**
     * 类型或其元素类型（包括集合和数组）是否是自定义 po jo
     * 判断逻辑：对象为基本类型、Number|Character|Character、String、数组类型、map、set、collection外认为是自定义po jo
     * @param t 对象
     * @return 是或者不是
     */
    public static <T> boolean isEntity(T t){
        if(null == t){return false;}
        Class clazz = t.getClass();
        if(clazz.isPrimitive()){return false;}
        if (Character.class.isAssignableFrom(clazz)) { return false; }
        if (Number.class.isAssignableFrom(clazz) || Boolean.class.isAssignableFrom(clazz)) { return false; }
        if (t instanceof String) { return false; }
        if (t instanceof Array){ return false; }
        if (t instanceof Collection) { return false; }
        if (t instanceof Map) { return false; }
        if(clazz.isAnnotation()){return false;}
        return !clazz.isEnum();
    }
}